package com.ada.spark.rddoperator

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object WordCount {

    def main(args: Array[String]): Unit = {

        //创建SparkConf
        val conf = new SparkConf();

        //设置App名称
        conf.setAppName("WordCount")

        //设定Spark计算框架的运行（部署）环境
        conf.setMaster("local[*]");

        //创建Spark上下文对象，该对象是提交Spark App的入口
        val sc = new SparkContext(conf)

        //读取文件，将文件内容一行一行的读取出来
        val lines: RDD[String] = sc.textFile("in")

        //将一行行的数据分解成一个一个的单词
        val words: RDD[String] = lines.flatMap(_.split(" "))

        //为了统计方便，交单词数据进行结构转换
        val wordToOne: RDD[(String, Int)] = words.map((_, 1))

        //对转换结构后的数据进行分组聚合
        val wordToSum: RDD[(String, Int)] = wordToOne.reduceByKey(_ + _)

        //将统计结果采集后打印到控制台
        val tuples: Array[(String, Int)] = wordToSum.collect()

        //打印结果
        tuples.foreach(println)

        //关闭连接
        sc.stop()
    }
}
